<?php

class BaokimController extends Controller
{
    /**
     * @return array action filters
     */
    public function filters()
    {
        return array(
            'accessControl', // perform access control for CRUD operations
            'postOnly + delete', // we only allow deletion via POST request
        );
    }

    /**
     * Specifies the access control rules.
     * This method is used by the 'accessControl' filter.
     * @return array access control rules
     */
    public function accessRules()
    {
        return array(
            array('allow',  // allow all users to perform 'index' and 'view' actions
                'actions'=>array('index','paid'),
                'users'=>array('@')
            ),
            array('allow',  // allow all users to perform 'index' and 'view' actions
                'actions'=>array('success'),
                'users'=>array('*')
            ),
            array('deny',  // deny all users
                'users'=>array('*'),
            ),
        );
    }
    /**
    *$id = number : number là id của sản phẩm cần thanh toán
    * $people : 1 : job , 2 : bidjoc , 3 : service , 4 : bidservice
    */
    public function actionPaid($id,$people)
    {
        if ($people < 0 || $people >4) {
            $da ="Bạn vào không đúng";
                $this->render('application.views.site.error',array('data'=>$da));
        }else{
            $baokim = new Baokim;
            if (0<$people && $people <3) {
                $model = Bidjob::model()->findByPk($id);
            }else{
                $model = BidService::model()->findByPk($id);
                $service_id = $model->service_id;
                $model_service = Service::model()->findByPk($service_id);
            }
            /**
            * people = 1 người làm thanh toán, people người thuê thanh toan 
            */
            
            if (isset($_POST['Baokim'])) {
                $baokim->uid = Yii::app()->user->id; // id người thanh toán
                $baokim->transaction_id = 0; // mã giao dịch bên bảo kim        
                $baokim->transaction_status = 0; // phương thức giao dịch 4 hoặc 13
                $baokim->customer_name = 0;
                $baokim->customer_address = 0;
                $baokim->table_id = $id; // thanh toán cho id bid nào
                $returnUrl = 'http://'.Yii::app()->request->getServerName();
                if($people == 1){
                    $baokim->action_table = "tbl_job"; // nguoi dang thanh toan
                    $baokim->total_amount = $model->money;// giá trị đơn hàng
                }
                if($people == 2){
                    $baokim->action_table = "tbl_bidjob"; // nguoi bid thanh toan
                    $baokim->total_amount = $model->money;// giá trị đơn hàng
                }
                if($people == 3){
                    $baokim->action_table = "tbl_service";
                    $baokim->total_amount = $model_service->money;// giá trị đơn hàng
                }
                if($people == 4){
                    $baokim->action_table = "tbl_bidservice";
                    $baokim->total_amount = $model_service->money;// giá trị đơn hàng
                }
                
                $baokim->status = 0;
                $baokim->create_time = new CDbExpression('NOW()');
                $baokim->update_time = new CDbExpression('NOW()');
                $baokim->save();
                Yii::import('application.extensions.BaoKimPayment');
                $order = new BaoKimPayment;
                $returnUrl .= Yii::app()->createUrl('/pay/baokim/');
                $url = $order->createRequestUrl($baokim->id, "anhntk54@gmail.com", $baokim->total_amount, "0", "0", "NAP-CS-MA-".$baokim->id, $returnUrl, $returnUrl, $returnUrl);
                echo "<script>window.location.href = '".$url."';</script>";
            }
            else{
                $this->render('paid', array('baokim' => $baokim,'model'=>$model,'people'=>$people));
            }
        }
    }
    public function actionIndex()
    {
        $dataProvider=new CActiveDataProvider('Baokim',array(
            'pagination'=>array(
                'pageSize'=>10,
            ),
            'criteria'=>array(
                'condition'=>"uid=".Yii::app()->user->id,
            ),
        ));
        $this->render('index',array(
            'dataProvider'=>$dataProvider,
        ));  
    }
            
    public function actionSuccess()
    {
        //Baokim Payment Notification (BPN)
        //Lay thong tin tu Baokim POST sang
        $req = '';
        foreach ( $_POST as $key => $value ) {
            $value = urlencode ( stripslashes ( $value ) );
            $req .= "&$key=$value";
        }
        // //Thuc hien  ghi log cac tin nhan BPN
        // $myFile = "logs/bpn.log";
        // $fh = fopen($myFile, 'a') or die("can't open file");
        // fwrite($fh, $req);

        $ch = curl_init();

        //Dia chi chay BPN that
        curl_setopt($ch, CURLOPT_URL,'https://www.baokim.vn/bpn/verify');
        curl_setopt($ch, CURLOPT_VERBOSE, 1);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
        $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        $error = curl_error($ch);
        echo "<textarea>$result</textarea><br />";
        if($result != ''  && $status==200){
            $order_id = $_POST['order_id'];
                        echo "co vao day k?".$_POST['order_id'];
            $order_id = $_POST['order_id'];
            $transaction_id = $_POST['transaction_id'];
            $transaction_status = $_POST['transaction_status'];
            $total_amount = $_POST['total_amount'];

            //Mot so thong tin khach hang khac
            $customer_name = $_POST['customer_name'];
            $customer_address = $_POST['customer_address'];
            //kiem tra trang thai giao dich
            if ($transaction_status == 4 || $transaction_status == 13){
            //Trang thai giao dich =4 la thanh toan truc tiep = 13 la thanh toan an toan
            echo "  vao buoc hai";
                //xac nhan la da thanh toan thanh cong don hang
                // Thao tac voi co so du lieu
                $baokim = Baokim::model()->findByPk($order_id);
                if (isset($baokim)) {
                    $time = new CDbExpression('NOW()');
                    $baokim->updateByPk($baokim->id, array('transaction_id'=>$transaction_id,
                                                        'transaction_status'=>$transaction_status,
                                                        'total_amount'=>$total_amount,
                                                        'customer_name'=>$customer_name,
                                                        'customer_address'=>$customer_email,
                                                        'status'=>1,
                                                        'update_time'=>$time,
                                                        ));
                    if ($baokim->action_table == "tbl_bidservice" || $baokim->action_table == "tbl_service") {
                        $data = BidService::model()->findByPk($baokim->table_id);
                        if ($data->user_id == $baokim->uid) {
                            $data->bid_deposited =1;
                            $data->save(false);
                        }else{
                            $data->service_deposited =1;
                            $this->sendMailCreate_Bid_Hopdong($data->id);
                            $this->sendMailCreate_Create_Hopdong($data->id);
                            $data->save(false);
                        }
                    }
                    if ($baokim->action_table == "tbl_job" || $baokim->action_table == "tbl_bidjob") {
                        $data = Bidjob::model()->findByPk($baokim->table_id);
                        if ($baokim->uid == $data->user_id) {
                            $data->status = Yii::app()->getModule('job')->bidsattus_deposit;
                            $data->save(false);
                        }else{
                            $data->job->statuspost =2;
                            $data->job->save(false);
                        }
                    }
                }
            }

            /**
             * Neu khong thi bo qua
             */
        }else{
            // echo "hat ngu nhu cho ";   
        }
    }

    public function actionFinish() {
        $url = 'http://'.Yii::app()->request->getServerName();
        $url .= CHtml::normalizeUrl(array('/Payments/BaoKim/finish'));
        echo $url;
    }
    
    /**
    *===========================================================================================================
    */
    function sendMail($title,$content,$mailuser){
        Yii::import('ext.yii-mail.YiiMailMessage');
            $message = new YiiMailMessage;
            $message->setBody($content, 'text/html');
            $message->subject = $title;
            $message->addTo($mailuser);
            $message->from = Yii::app()->params['adminEmail'];
            Yii::app()->mail->send($message);
    }
    /**
    *HÀNH ĐỘNG CỦA NGƯỜI ĐĂNG
    */
    // chấp nhận hợp đồng
   
    /**
    *Khi người đăng  đồng ý hợp đồng và thanh toán
    */
    public function sendMailCreate_Bid_Hopdong($bidservice_id){// gửi cho người
        $model = BidService::model()->findByPk($bidservice_id);
       
        $userBid_id = $model->user_id;
        $service_id = $model->service_id;
       
        $model_service = Service::model()->findByPk($service_id);
        $userCreate_id = $model_service->user_id;
       
        $link = Yii::app()->request->hostInfo.Yii::app()->controller->createUrl('/service/baokim/paid',array('id'=>$bidservice_id,'people'=>2));
        $title = User::getName($userCreate_id)." đã đồng ý làm hợp đồng dịch vụ bạn thuê";
        $content = "Dear <br/>".
                    User::getName($userBid_id)."<br/>".
                    "Người đăng dịch vụ : ". User::getName($userCreate_id). "<br/> Đã làm hợp đồng và đặt cọc cho hợp đồng của bạn<br/>".
                    "Bạn hãy vào link dưới đây để thanh toán cho hợp đồng giữa bạn và người làm dịch vụ này <br/>".
                    $link."<br/>".
                    "Chúc bạn thành công trong cuộc sống <br/>".
                    "Best,<br/>".
                    "DnD Việt Nam";
        $this->sendMail($title,$content,User::getEmail($userBid_id));
       
       
    }
   
    public function sendMailCreate_Create_Hopdong($bidservice_id){
       
        $model_bid = BidService::model()->findByPk($bidservice_id);
        $service_id = $model_bid->service_id;
        $model_service = Service::model()->findByPk($service_id);
        //user_id
        $userBid_id = $model_bid->user_id;
        $userService_id = $model_service->user_id;
        //tên
        $name_bid = User::getName($userBid_id);
        $name_service = User::getName($userService_id);
       
        $link1 = Yii::app()->request->hostInfo.Yii::app()->controller->createUrl('/service/create/view',array('id'=>$service_id));
        $link2 =  Yii::app()->request->hostInfo.Yii::app()->controller->createUrl('/service/bid/view',array('id'=>$bidservice_id));
       
        $title = "Bạn đã làm hợp đồng và đặt cọc thành công cho người bid ".$name_bid ."<br/>";
       
        $content = "Dear ".$name_service."<br/>".
                    "Bạn đã làm hợp đồng và đặt cọc cho dịch vụ : ".$model_service->name."<br/>".
                    "Người thuê dịch vụ của bạn : ".$name_bid."<br/>".
                    "Chúng tôi sẽ yêu cầu người thuê đặt cọc cho dịch vụ của bạn. Nếu sau 48h chúng tôi không nhận được đặt cọc của người thuê
                    chúng tôi sẽ hoàn trả lại số tiền bạn đặt cọc và chấm dứt hợp của bạn và người thuê. Hãy vui lòng chờ đợi. Chúc bạn thành
                    công trong cuộc sống <br/>".
                    "Dịch vụ bạn đăng : <br/>".$link1."<br/>".
                    "Yêu cầu người thuê : <br/>".$link2."<br/>".
                    "Best, DnD Việt Nam";
        $this->sendMail($title,$content,User::getEmail($userService_id));
    }
    
    public function sendMailBid_Bid_Hopdong($bidservice_id){
        
        
    }

   
    
}